home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Atari Compendium
/
The Atari Compendium (Toad Computers) (1994).iso
/
files
/
umich
/
network
/
ka9q
/
ka9q_src.arc
/
SMTP.H
< prev
next >
Wrap
C/C++ Source or Header
|
1988-07-28
|
2KB
|
73 lines
#define SMTPTRACE /* enable tracing for smtp */
#define SMTP_PORT 25 /* well-known port for smtp */
#define SMTPCLITIME 900 /* 15 minutes between client starts */
#define MAXSESSIONS 10 /* most connections allowed */
#define JOBNAME 13 /* max size of a job name with null */
#define LINELEN 128
#define SLINELEN 32
extern char mailspool[];
extern char mailqdir[]; /* Outgoing spool directory */
extern char mailqueue[]; /* Prototype of work file */
extern char maillock[]; /* Mail system lock */
extern char baddir[]; /* Undeliverable jobs */
extern char hostname[];
extern int32 mailroute();
extern int mlock(),rmlock();
/* Recipient address entry */
struct addr {
struct addr *next;
char *val;
};
/* Per-session control block used by smtp server */
struct mail {
struct tcb *tcb; /* TCP control block pointer */
char state;
#define COMMAND_STATE 0
#define DATA_STATE 1
char *system; /* Name of remote system */
char *from; /* sender address */
struct addr *to; /* Linked list of recipients */
char buf[LINELEN]; /* Input buffer */
char cnt; /* Length of input buffer */
FILE *data; /* Temporary input file pointer */
int32 seqn; /* message id */
};
/* used by smtpcli as a queue entry for a single message */
struct smtp_job {
struct smtp_job *next; /* pointer to next mail job for this system */
char jobname[9]; /* the prefix of the job file name */
char *from; /* address of sender */
char *to; /* address recipient */
};
/* control structure used by an smtp client session */
struct smtp_cb {
struct tcb *tcb; /* tcp task control buffer */
int32 ipaddr; /* address of forwarding system */
char state; /* state machine placeholder */
#define CLI_OPEN_STATE 0
#define CLI_HELO_STATE 1
#define CLI_MAIL_STATE 2
#define CLI_RCPT_STATE 3
#define CLI_DATA_STATE 4
#define CLI_SEND_STATE 5
#define CLI_UNLK_STATE 6
#define CLI_QUIT_STATE 7
#define CLI_IDLE 8
char *wname; /* name of workfile */
char *tname; /* name of data file */
char buf[LINELEN]; /* Input buffer */
char cnt; /* Length of input buffer */
FILE *tfile;
struct smtp_job *jobq;
};
#define NULLADDR (struct addr *)0
#define NULLMAIL (struct mail *)0
#define NULLCB (struct smtp_cb *)0
#define NULLJOB (struct smtp_job *)0